package com.kuang.a03threadcase3;

import com.kuang.a02threadcase2.MyRunnable;

import java.util.concurrent.FutureTask;

/**
 * @author gs
 * @date 29/5/2024 下午4:05
 */
public class ThreadDemo {


    /**
     * 多线程的第三种启动方式
     * 1、自定义一个类实现Callable<>接口
     * 2、重写call方法(返回结果是实现Callable<>里的类型)
     * 3、创建MyCallable类对象
     * 4、创建FutureTask对象自己的类对象
     * 5、创建Thread类的对象，并开启线程
     */

    public static void main(String[] args) throws Exception {
        //3
        //创建MyRunnable对象 表示多线程要执行的任务
        MyCallable mc1 = new MyCallable();
        FutureTask<Integer> ft = new FutureTask<>(mc1);
        Thread t1 = new Thread(ft);
        t1.start();
        //不能用这种方法获取线程运行结果
        System.out.println(t1.getName() + ":" + mc1.call());
        //获取线程运行结果
        Integer result = ft.get();
        System.out.println(t1.getName() + ":" + result);


    }
}
